home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / foomatic-getpjloptions < prev    next >
Text File  |  2009-09-18  |  2KB  |  75 lines

  1. #!/bin/bash
  2. #
  3. # Polls PJL options from local or network printers
  4. #
  5.  
  6. #
  7. # Till Kamppeter (till.kamppeter@gmx.net)
  8. #
  9. # Copyright 2001 Till Kamppeter
  10. #
  11. # This software may be freely redistributed under the terms of the GNU
  12. # General Public License (http://www.gnu.org/).
  13. #
  14. # You should have received a copy of the GNU General Public License
  15. # along with this program; if not, write to the Free Software
  16. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17. #
  18. #   Modifed by Patrick Powell <papowell at astart.com>
  19. #   - error messages, fixed problem with netcat
  20. #   - increased timeout, added a job end to sequence
  21. #     as this was needed by a couple of printers
  22.  
  23. NC=/bin/nc
  24. CAT=/bin/cat
  25. PRINTF=/usr/bin/printf
  26. PERL=/usr/bin/perl
  27.  
  28. usage(){
  29.     cat <<EOF ;
  30. usage: foomatic-getpjloptions <device>
  31.        foomatic-getpjloptions <hostname> <port>
  32.  
  33.    <device>:   Device where a local printer is connected to
  34.                examples: /dev/lp0, /dev/usb/lp0
  35.                Have your parallel port in EPP/bi-directional mode
  36.                (see your BIOS settings).
  37.    <hostname>: Host name or IP of a network printer (HP JetDirect,
  38.                Socket, ...)
  39.    <port>:     Port of your network printer.
  40. echo
  41.    Uni-directional protocols as remote LPD are not supported.
  42.  
  43.    The option list is sent to standard output.
  44. EOF
  45.     exit 1;
  46. }
  47.  
  48. case "$1" in
  49.     -* ) usage;;
  50.     ""    ) usage;;
  51. esac
  52.  
  53.     # We have at least one argument, so do the work
  54.     (
  55.     # PJL commands to request the printer information
  56.     $PRINTF "\033%%-12345X"
  57.     $PRINTF "@PJL\r\n"
  58.     $PRINTF "@PJL INFO VARIABLES\r\n"
  59.     $PRINTF "@PJL INFO ID\r\n"
  60.     $PRINTF "@PJL INFO CONFIG\r\n"
  61.     $PRINTF "\033%%-12345X"
  62.     ) | if [ ${2:-X} != X ]; then
  63.     # We have two arguments, do ethernet printer request
  64.     # Poll the printer's answer and filter out the newpage characters
  65.     ${NC} -w 3 ${1} ${2} 2>/dev/null | ${PERL} -p -e "s/\014//"
  66.     else
  67.     # We have one argument, do local printer request
  68.     # Send commands to printer port
  69.     ${CAT} > ${1}
  70.     # Wait ten seconds for the printer to process the request
  71.     sleep 10
  72.     # Poll the printer's answer and filter out the newpage and CR characters
  73.     ${CAT} < ${1} | ${PERL} -p -e "s/[\015\014]//"
  74.     fi
  75.